Cos'è memoria virtuale?

Memoria Virtuale

La memoria virtuale è una tecnica di gestione della memoria che permette a un sistema operativo di utilizzare più memoria di quanto fisicamente disponibile (RAM). Crea una illusione di spazio di indirizzamento più grande per i processi, consentendo l'esecuzione di programmi più grandi o di più programmi contemporaneamente.

Come funziona:

La memoria virtuale si basa sull'utilizzo di due tipi di memoria:

  • Memoria fisica (RAM): La memoria reale installata sul computer.
  • Memoria secondaria (Disco rigido/SSD): Utilizzata come estensione della RAM.

Il sistema operativo suddivide la memoria virtuale in unità chiamate pagine (tipicamente di 4KB). Queste pagine vengono poi mappate a frame nella memoria fisica. Non tutte le pagine di un processo devono risiedere nella RAM contemporaneamente. Quelle non necessarie vengono memorizzate su disco (in un'area chiamata swap space o file di paging).

Concetti Chiave:

Vantaggi:

  • Permette l'esecuzione di programmi più grandi della RAM disponibile.
  • Permette l'esecuzione simultanea di più programmi.
  • Semplifica la gestione della memoria per i programmatori.
  • Offre un certo grado di protezione tra i processi, impedendo a un processo di accedere alla memoria di un altro.

Svantaggi:

  • Più lenta dell'accesso diretto alla RAM a causa della necessità di accedere al disco (page faults).
  • Richiede un overhead per la gestione delle tabelle delle pagine e delle operazioni di swapping.
  • Può portare a thrashing se il sistema operativo non riesce a gestire efficientemente la memoria virtuale (eccessivi page faults). https://it.wikiwhat.page/kavramlar/Thrashing